home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 41.zip / BS1 part 41 / Soundtracker Soundsystem.adf / MegaTraxx < prev    next >
Text File  |  1988-03-09  |  10KB  |  205 lines

  1. c pxuyt
  2.                            The Jungle Command
  3.                           
  4.                 presents:
  5.  
  6.                      MegaTraxx
  7.                 ~~~~~~~~~
  8.  
  9.                 Author : The Exterminator
  10.             Updated: The Rasta Catcha
  11.                            Date   : 9-Feb-1988
  12.  
  13. MegaTraxx is a program that enables you to compose your own music for use in
  14. intros and/or demos. MegaTraxx is based around the ReLine-software sound-
  15. routine. I've figured out how this routine works and added a few amendments
  16. like arpeggios on all four channels, portamento and modulation.
  17. Editing is by use of the Seka-assembler. MegaTraxx can directly be in-
  18. corporated in your source-file (watch out for double symbols !) or added
  19. to the object-file later.  
  20. MegaTraxx is very fast. When MegaTraxx is played at its fastest pace, (the
  21. speed-label set to less than about $50) a single pass through the routine can
  22. be completed in about six 'raster-lines'. (640 pixel, non-interlaced,
  23. four color display with no furter competing bus-activity.)
  24.  
  25. Composing music with MegaTraxx is very simple and not unlike 'SoundMonitor'
  26. (or RockMonitor I-IV for that matter...Hi D-USA Team !) known from the C64.
  27. You begin by selecting the samples for use as your instruments. 
  28. If you like, you can use your own samples . For this reason, the excellent
  29. sample-editor AudioMaster, is also supplied on this disk.
  30. But first take a look at line 465. Here you can define the name of your 
  31. master-piece. Please note that the length of this string must exactly be 
  32. twenty characters, or else MegaTraxx will not function properly.
  33.  
  34. MegaTraxx must be told where each sample begins in memory. You do this by
  35. changing the number behind the 'move.l' instruction in the lines 44-58.
  36. Up to fifteen samples can be incorporated in a single music-track.
  37. In addition to the above, MegaTraxx must also be told the name, length,
  38. volume etc. of each instrument.
  39. This is done from line 468 onwards.
  40.  
  41. First you define the names of the instruments. Keep in mind that the length
  42. of these strings must exactly be twenty-two characters ! (Of course, defining
  43. the name of each sample may seem of little use. But I found that this can be
  44. of use in the course of development.)
  45. After this you must tell MegaTraxx the length of the instrument in WORDS.
  46. Behind each entry in the 'SoundFiles'-directory the length of that
  47. particular sample is given. This is the length of that sample in BYTES.
  48. To obtain the length in WORDS, this number must be devided by two.
  49. Furthermore, the volume of the instrument must be defined. This can be any
  50. number from zero to sixty-four ($40).
  51. When the words 'Start' and 'Repeat' are both zero, the instrument will be 
  52. restarted when it is completed. If 'Start' is set to zero and 'Repeat' is set
  53. to one, the instrument will be played only once. It is also possible to play
  54. just a small part of an instrument constantly. This is the case whenever
  55. 'Start' is set to a non-zero value. 'Start' now defines the offset to be
  56. added to the starting-position of the sample in memory and 'Repeat' defines
  57. the length of the part of the instrument to be played. For example, say you
  58. had a sample in memory at location $50000 and you wished to play a part of
  59. it, for instance from $50200 to $5045a. Now, set 'Start' to $0200
  60. ($50000+$200=$50200) and 'Repeat' to $025a. ($50200+$25a=$5045a)
  61.  
  62. When all the instruments are defined, you can start composing your master-
  63. piece. Every piece of music written with MegaTraxx is built up from small
  64. parts of music. MegaTraxx holds a table of numbers that define in what 
  65. sequence these parts must be played.
  66. This table starts at line 536. To determine the number of entries in the
  67. table MegaTraxx uses the first byte of the word in line 530. (Below the
  68. 'partinfo' label) Say you needed six entries in the table, so the word in
  69. line 530 would become $0678.
  70. Each byte in the table stands for a part to be played. So if your table
  71. looked like this : $0100,$0202,$0301, MegaTraxx would first of all play
  72. part 1, then part 0, twice part 2, part 3 and at the end part 1 again.
  73.  
  74. The parts start at line 549. Each part consists of four columns, (one for
  75. every voice) of two words, so every line holds eight words of data. All parts
  76. consist of thirty-two lines of data, thus each part is 512 ($0200) bytes
  77. long. You can add as many parts as you like, memory permitting.
  78. Each pair of words stands for a voice. I will now explain the format in which
  79. the data for the voices is held in these pairs of words.
  80. The following diagram shows the meaning of every nibble (4 bits) in the
  81. words:
  82.  
  83.        $ 1 2 3 a , $ 1 1 4 5
  84.         /   \|/        /  |  \|    
  85.        /  Period   /   |   Arpeggio or Portamento information.
  86.  Selects          /   Mod.   
  87.  Arpeggio,   Instrument #
  88.  Portamento
  89.  or silence
  90.  
  91.  
  92. Instrument # : This nibble defines which instrument to use. Choose a number
  93.            from 0 to 15 ($0-$f). Zero means : use last instrument.
  94.            So if you had choosen instrument 2 to play a particular note,
  95.            and later on you wanted the same instrument to play again, you
  96.            could use the following : $X23a,$2XXXX
  97.                      $X1ac,$0XXXX
  98.  
  99. Period : These three nibbles define the note that must be played by an
  100.      instrument. This table shows what number to use for a certain note :
  101.  
  102.                           Octave
  103.           
  104.         A    $07f  $0fe     $1fc       
  105.            A#   $078  $0f0     $1e0  
  106.         B    $071  $0e2  $1c5  
  107.         C          $0d6  $1ac  $358
  108.         C#          $0ca     $194  $328
  109.         D           $0be  $17d  $2fa
  110.       Note    D#          $0b4  $168  $2d0
  111.         E           $0aa  $153  $2a6
  112.         F          $0a0  $140  $280
  113.         F#          $097  $12e  $25c
  114.         G           $08f  $11d  $23a
  115.         G#         $087  $10d  $21a
  116.  
  117. Modulation : One voice can be programmed to modulate another. This means that
  118.          either the volume, period or volume AND period are no longer
  119.          static values that are set before starting to play a note, but
  120.          that these are subject to change during play. It can be seen
  121.          that this provides a way to program viberato and tremolo
  122.          effects.
  123.          When the modulation-nibble is zero, no modulation takes place,
  124.          when it's set to one, it means that only the volume must be
  125.          modulated. To modulate only the period, set it to two and to
  126.          modulate both the period and the volume, set it to three.
  127.          When a voice is programmed to modulate, it always modulates the
  128.          next voice. So voice1 modulates voice2, voice2 modulates voice3
  129.          and so on. When a voice is told to modulate another, that voice
  130.          is made silent. When voice4 is told to modulate, it is only made
  131.          silent, because there are no 'higher' voices than voice4.
  132.          How does this modulation work ? Well, say you programmed voice1
  133.          to modulate only the volume of voice2. The volume of voice2 is
  134.          no longer defined by the volume of that instrument. Instead, the
  135.          words in the sample of voice1 define the volume for voice2.
  136.          So if the sample of voice1 looked like this :
  137.          $0030,$0032,$0034 etc., the volume of voice2 would become $30,
  138.          then $32 and so on. This is used to introduce a viberato to
  139.          voice2. The period of voice1 defines the speed of this viberato
  140.          effect. 
  141.          When voice1 was programmed to modulate the period of voice2, the
  142.          words in the sample of voice1 would define the period of voice2.
  143.          When a voice is programmed to modulate the volume AND the period
  144.          of the next voice, the first word in the sample defines the
  145.          volume, the second the period, the third the volume again and so
  146.          on.
  147.  
  148. Arpeggio and : Arpeggio is used for simulating accords. It does this by
  149. Portamento     rapidly changing the notes while playing an instrument.
  150.            To select arpeggios, set the first nibble of word one to zero.
  151.            When arpeggios are selected, MegaTraxx looks five times during
  152.            the play of one note, at the information contained in the last
  153.            byte of the second word. Each nibble in this byte defines
  154.            how many notes MegaTraxx must add to the the note currently
  155.            playing. In each of the five passes MegaTraxx does the
  156.            following with the information in the last byte of word two :
  157.            
  158.            1 - Add the first nibble to the current note.
  159.  
  160.            2 - Add the second nibble to the current note.
  161.  
  162.            3 - Play the current note.
  163.  
  164.            4 - Add the first nibble to the current note.
  165.  
  166.            5 - Add the second nibble to the current note.
  167.  
  168.  
  169.            Portamento is used for 'sliding' of the instrument. When the
  170.            first nibble of word one is set to two, the instrument is
  171.            slided up. When its set to one, the instrument will slide
  172.            down. If portamento is in use, the information contained in
  173.            the last byte of the second word will be added to (or
  174.            subtracted from) the period of the note playing in each of
  175.            the five passes.
  176.  
  177.            When the first nibble of word one is set to three, all audio
  178.            output from that voice will stop untill the next note is
  179.            started.
  180.  
  181.  
  182. The 'Speed' label at the start of this program, defines the pace at which the
  183. notes succeed each-other. Please note that, the higher the number, the slower
  184. MegaTraxx becomes. Also, the slower MegaTraxx becomes, the longer it takes to
  185. complete a pass through the routine. Some samples cannot handle high speeds,
  186. so you will have to try this out.  
  187.  
  188. As has been told before, the source-file of the MegaTraxx routine can
  189. directly be incorporated in your demo/intro-source. To minimize the
  190. possibility of a 'Double Symbol' error, all labels used in MegaTraxx start
  191. with 'mt_'. So, when writing your program, do not use any labels that start
  192. with 'mt_'.
  193. At the start of your program, call the 'mt_init' routine, and to play the
  194. music, call the routine 'mt_music' once every vertical blanking interrupt.
  195.  
  196. If you have any comments or queries about this program, feel free to write
  197. or call :
  198.  
  199.     Mark Langerak,
  200.     Oude Haven 26-28
  201.     4301 CK  Zierikzee.
  202.     Call : (0)1110-16647 Holland.
  203.  
  204.  
  205.             press ESC for Main MenuDj p